T-mail

21.Особенности работы в многолинейных и многозадачных системах

Номера задач. Схема Master/Slave(s)

Использование выделенного упаковщика

Флаги при многолинейной работе

T-Mail является многолинейным мэйлером. Один экземпляр T-Mail может обслуживать только одну линию связи, однако, предусмотрена возможность одновременной работы нескольких экземпляров T-Mail в многозадачной среде (локальная сеть, multitasker DOS - DESQview, Windows и т.п., или OS/2). При работе в многозадачных средах T-Mail отдает процессору неиспользуемые интервалы процессорного времени (timeslices).

Номера задач. Схема Master/Slave(s)

В случае использования в системе нескольких линий и, как следствие, нескольких задач T-Mail, работающих одновременно, используется разграничение функций каждой из этих задач. Выделяется только одна задача, которая будет заниматься упаковкой почты (Master), она может выполнять все обычные функции или же вы можете снять с нее обязанности по управлению модемом (см. раздел "Использование выделенного упаковщика" в этой же главе). Остальные задачи (Slave) упаковкой почты не занимаются, они только работают с модемами и могут распаковывать пришедшую на их линию почту. Передача информации между задачами Slave и Master осуществляется через специальные временные файлы и флаги (см. ниже).

Для нормального "разделения обязанностей" каждому экземпляру программы t-mail.exe, запущенному в многолинейной системе, должен быть задан уникальный номер задачи. Это делается с помощью ключа -N при запуске t-mail.exe:

T-MAIL -N1═════════ - номер задачи (task ident) 1(по умолчанию)

T-MAIL -N3═════════ - ----- " ------══════════ 3

В некоммерческой версии T-Mail можно использовать только задачи с номерами 0, 1 и 2. В коммерческих версиях можно использовать в одной системе до 255 задач (в зависимости от категории) с номерами 0...254.

В файлах конфигурации для обозначения номера задачи можно использовать специальную переменную %TASKNO% (см. главу 7, раздел "использование переменных окружения (environment)"). Вместо этой переменной будет подставлен номер конкретной задачи, заданный ключом -N в командной строке.

Кроме того, мэйлеры должны использоваться по схеме Master/Slave (ведущий/ведомые). Для этого в файле t-mail.ctl одному из экземпляров T-Mail сообщается, что он Master, а остальным - что они Slave, например:

[1] Task_Mode═════ Master

[2] Task_Mode═════ Slave

[3] Task_Mode═════ Slave

Тот T-Mail, который был запущен с ключом -N1 возьмет на себя функции упаковщика. Остальные будут через временный файл получать информацию об очереди и специальными флагами сообщать T-Mail/master о необходимости той или иной обработки. Таким образом, только один экземпляр T-Mail будет просматривать письма и готовить их к отправке.

Поскольку файлы t-mail.ctl и events.ctl, как правило, являются общими для всех экземпляров, в этом случае придется для некоторых переменных использовать поле <task ident>. Например:

[1]LogT-Mail1.log

[2]LogT-Mail2.log

[3]LogT-Mail3.log

или эквивалентное выражение:

LogT-Mail%TASKNO%.log

Использование выделенного упаковщика

Просмотр почты, создание пакетов и другие функции, которые выполняет T-Mail/master, могут занимать длительное время, например, если для обработки эхопочты T-Mail запускает эхопроцессор.

В этом случае можно использовать один из экземпляров T-Mail только для этих целей, "отключив его от модема". Это достигается заданием в качестве COM-порта 0:

Пример (t-mail.ctl):

[1] Task_Mode══ Master

[2] Task_Mode══ Slave

 

[1] Port0

[2] Port1

 

В этом случае T-Mail/master будет выполнять только функции упаковки, запуска внешних программ и т.п.

Флаги при многолинейной работе

В схеме Master/Slave(s) есть еще одна возможность распределения функций между задачами. Для этого служат флаги. Поясним это на примере:

Пример (t-mail.ctl):

[1] Task_Mode══ Master

[2] Task_Mode══ Slave

...

[1] Process_Flaganyarc.t-mc:\t-mail\_echoes.bat

[2] Process══════ ArcMail════ Create anyarc.t-m

...

Как видно, T-Mail/slave в этом случае по приходу эхопочты создаст флаг anyarc.t-m. Заметив этот флаг, T-Mail/master запустит соответствующий процесс, определенный конструкцией Process_Flag для этого флага.

В версиях T-Mail для OS/2 и Windows NT вместо файлов-флагов можно использовать системные семафоры. Они используются аналогично, но располагаются не на дисковом устройстве, а в оперативной памяти. Для того, чтобы T-Mail знал, что флаг является не файлом, а системным семафором, имя семафора должно начинаться со строки "\SEM32\", например: \SEM32\arcmail.t-m.

Таким же образом можно распределять и другие функции.